package jgespres;

import java.sql.Date;

/**
 * Description d'un thème de présentation
 * 
 * @author guerfyld 
 * @version 2.0
 */
public class Theme {
    // Description d'un theme
    private int id;
    private Date date;
    private String ident;
    private String label;
    private String largeLabel;
    // Ordre dans la liste des dates
    private int pos;
    
    /**
     * Constructeur
     */
    public Theme() {
        try {
            id         = 0;
            date       = jgespres.NULLDATE;
            ident      = jgespres.NULL;
            label      = jgespres.NULL;
            largeLabel = jgespres.NULL;
            pos        = 0;
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Renvoi l'Id. technique du thème
     * 
     * @return     Id. technique du thème
     */
    public final int getId() {
        return id;
    }

    /**
     * Renvoi Date du thème
     * 
     * @return     Date du thème
     */
    public final Date getDate() {
        return date;
    }

    /**
     * Renvoi identifiant du thème
     * 
     * @return     Identifiant du thème
     */
    public final String getIdent() {
        return ident;
    }

    /**
     * Renvoi sujet court du thème
     * 
     * @return     Sujet court du thème
     */
    public final String getLabel() {
        return label;
    }

    /**
     * Renvoi sujet long du thème
     * 
     * @return     Sujet long du thème
     */
    public final String getLargeLabel() {
        return largeLabel;
    }

    /**
     * Renvoi n° d'ordre du thème dans dates plannifiées
     * 
     * @return      N° d'ordre
     */
    public final int getOrderPos() {
        return pos;
    }
    
    /**
     * Renvoi s'il s'agit d'un séparateur
     * 
     * @return      Vrai/Faux
     */
    public final boolean isSeparator() {
        return label.equals(".");
    }

    /**
     * Mise à jour de l'Id. technique du thème
     * 
     * @param id     Id. technique du thème
     */
    public final void setId(int id) {
        this.id = id;
    }

    /**
     * Mise à jour de la Date du thème
     * 
     * @param date      Date du thème
     */
    public final void setDate(Date date) {
        this.date = (date != null) ? date : jgespres.NULLDATE;
    }
    public final void setDate(java.util.Date date) {
        // Temporaire !!!
        setDate(new Date(date.getTime()));
    }
    
    /**
     * Mise à jour identifiant du thème
     * 
     * @param ident      Identifiant du thème
     */
    public final void setIdent(String ident) {
        this.ident = (ident != null) ? ident.trim() : jgespres.NULL;
    }

    /**
     * Mise à jour sujet court du thème
     * 
     * @param largeLabel    Sujet court du thème
     */
    public final void setLabel(String label) {
        this.label = (label != null) ? label.trim() : jgespres.NULL;
    }

    /**
     * Mise à jour sujet long du thème
     * 
     * @param extraLargeLabel   Sujet long du thème
     */
    public final void setLargeLabel(String largeLabel) {
        this.largeLabel = (largeLabel != null) ? largeLabel.trim() : jgespres.NULL;
    }

    /**
     * Mise à jour n° d'ordre du thème dans dates plannifiées
     * 
     * @param pos       N° d'ordre
     */
    public final void setOrderPos(int pos) {
        this.pos = pos;
    }
    
    /**
     * Renvoi une chaine décrivant l'objet
     * 
     * @return      Chaine décrivant l'objet.
     */
    public final String toString() {
        return "Theme[id="+id+"; date="+date+"; ident="+ident+"; label="+label+"; largeLabel="+largeLabel+"]";
    }
}
